MySQL-এ GROUP BY এবং HAVING ক্লজ দুটি ডেটা গ্রুপিং এবং গ্রুপের উপর শর্ত প্রয়োগ করার জন্য ব্যবহৃত হয়। এগুলি সাধারণত একসাথে ব্যবহৃত হয়, যেখানে GROUP BY প্রথমে ডেটা গ্রুপ করে এবং তারপরে HAVING সেই গ্রুপের উপর শর্ত প্রয়োগ করে।
GROUP BY
GROUP BY ক্লজটি ব্যবহার করে আপনি একটি টেবিলের ডেটা নির্দিষ্ট কলামের ভিত্তিতে গ্রুপ করতে পারেন এবং তারপরে প্রতিটি গ্রুপের জন্য অ্যাগ্রিগেট ফাংশন ব্যবহার করতে পারেন (যেমন COUNT(), SUM(), AVG(), MAX(), MIN() ইত্যাদি)। এটি সাধারণত ডেটা বিশ্লেষণ এবং সংক্ষেপণের জন্য ব্যবহৃত হয়।
GROUP BY সিনট্যাক্স:
SELECT column_name(s), AGGREGATE_FUNCTION(column_name)
FROM table_name
GROUP BY column_name(s);
এখানে:
column_name(s)হলো গ্রুপিংয়ের জন্য ব্যবহার করা কলাম।AGGREGATE_FUNCTION(column_name)হলো যে অ্যাগ্রিগেট ফাংশনটি আপনি ব্যবহার করতে চান (যেমনCOUNT,SUM,AVG, ইত্যাদি)।
GROUP BY এর উদাহরণ:
ধরা যাক, আমাদের কাছে একটি employees টেবিল আছে এবং আমরা জানি যে প্রতিটি কর্মচারী একটি নির্দিষ্ট department_id এর অধীনে কাজ করে। আমরা প্রতিটি department_id এর জন্য কর্মচারীদের সংখ্যা দেখতে চাই।
SELECT department_id, COUNT(*) AS total_employees
FROM employees
GROUP BY department_id;
এটি employees টেবিলের প্রতিটি department_id এর জন্য কর্মচারীর সংখ্যা total_employees হিসেবে দেখাবে।
HAVING
HAVING ক্লজটি GROUP BY এর পর ব্যবহৃত হয় এবং এটি গ্রুপকৃত ডেটার উপর শর্ত প্রয়োগ করতে ব্যবহৃত হয়। এটি সাধারণত অ্যাগ্রিগেট ফাংশনের সাথে ব্যবহৃত হয় এবং WHERE ক্লজের মতোই কাজ করে, তবে পার্থক্য হলো WHERE ক্লজ ডেটা গ্রুপ করার আগে শর্ত প্রয়োগ করে, আর HAVING গ্রুপ করার পরে শর্ত প্রয়োগ করে।
HAVING সিনট্যাক্স:
SELECT column_name(s), AGGREGATE_FUNCTION(column_name)
FROM table_name
GROUP BY column_name(s)
HAVING condition;
HAVING এর উদাহরণ:
ধরা যাক, আপনি পূর্ববর্তী উদাহরণে department_id অনুযায়ী কর্মচারীদের সংখ্যা দেখতে চাই, তবে শুধুমাত্র সেই ডিপার্টমেন্টগুলির জন্য যেখানে কর্মচারীর সংখ্যা ১০ এর বেশি। এখানে HAVING ক্লজ ব্যবহার করা হবে:
SELECT department_id, COUNT(*) AS total_employees
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 10;
এটি শুধু সেই ডিপার্টমেন্টগুলো দেখাবে যেখানে কর্মচারীর সংখ্যা ১০ এর বেশি।
GROUP BY এবং HAVING একসাথে ব্যবহার
অনেক সময় GROUP BY এবং HAVING একসাথে ব্যবহৃত হয়, যেখানে GROUP BY দিয়ে ডেটা গ্রুপ করা হয় এবং তারপর HAVING দিয়ে শর্ত প্রয়োগ করা হয়।
একটি উদাহরণ:
ধরা যাক, আমরা চাই employees টেবিল থেকে প্রতিটি department_id এর গড় বেতন বের করতে, তবে আমরা শুধুমাত্র সেই ডিপার্টমেন্টগুলো দেখতে চাই, যেখানে গড় বেতন ৫০,০০০ এর বেশি।
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 50000;
এটি শুধুমাত্র সেই department_id গুলি দেখাবে যাদের গড় বেতন ৫০,০০০ এর বেশি।
GROUP BY এবং HAVING এর মধ্যে পার্থক্য
- GROUP BY: ডেটাকে গ্রুপ করে এবং গ্রুপের উপর অ্যাগ্রিগেট ফাংশন প্রয়োগ করে।
- HAVING: গ্রুপকৃত ডেটার উপর শর্ত প্রয়োগ করে, এবং অ্যাগ্রিগেট ফাংশনের ফলাফলের উপর ভিত্তি করে শর্ত প্রয়োগ করতে সাহায্য করে।
WHEREক্লজের মতো, কিন্তুWHEREডেটা গ্রুপ করার আগে এবংHAVINGগ্রুপ করার পরে প্রয়োগ হয়।
সারাংশ
- GROUP BY ক্লজটি ডেটাকে একটি নির্দিষ্ট কলামের ভিত্তিতে গ্রুপ করে এবং প্রতি গ্রুপের জন্য অ্যাগ্রিগেট ফাংশন প্রয়োগ করে।
- HAVING ক্লজটি GROUP BY এর পর গ্রুপকৃত ডেটার উপর শর্ত প্রয়োগ করতে ব্যবহৃত হয়।
- GROUP BY এবং HAVING একসাথে ব্যবহার করে আপনি আরও উন্নত এবং জটিল ডেটাবেস বিশ্লেষণ করতে পারবেন।
Read more